Data-Blocks and Other-immediates Typing

These are the other-immediate types. We specify them including all low eight bits, including the other-immediate tag, so we can think of the type bits as one type – not an other-immediate major type and a subtype. Also, fetching a byte and comparing it against a constant is more efficient than wasting even a small amount of time shifting out the other-immediate tag to compare against a five bit constant.

Number   (< 30)
  bignum                                        10
    ratio                                       14
    single-float                                18
    double-float                                22
    complex                                     26

Array   (>= 30 code 86)
   Simple-Array   (>= 20 code 70)
         simple-array                           30
      Vector  (>= 34 code 82)
         simple-string                          34
         simple-bit-vector                      38
         simple-vector                          42
         (simple-array (unsigned-byte 2) (*))   46
         (simple-array (unsigned-byte 4) (*))   50
         (simple-array (unsigned-byte 8) (*))   54
         (simple-array (unsigned-byte 16) (*))  58
         (simple-array (unsigned-byte 32) (*))  62
         (simple-array single-float (*))        66
         (simple-array double-float (*))        70
      complex-string                            74
      complex-bit-vector                        78
      (array * (*))   -- general complex vector. 82
   complex-array                                86

code-header-type                                90
function-header-type                            94
closure-header-type                             98
funcallable-instance-header-type                102
unused-function-header-1-type                   106
unused-function-header-2-type                   110
unused-function-header-3-type                   114
closure-function-header-type                    118
return-pc-header-type (a.k.a LRA)               122
value-cell-header-type                          126
symbol-header-type                              130
base-character-type                             134
system-area-pointer-type (header type)          138
unbound-marker                                  142
weak-pointer-type                               146
structure-header-type                           150